// 页面加载完成之后，获取员工列表数据
$(function () {
    showPage(1);
    getDeptList();
});

//展示分页数据
function showPage(pageIndex) {
    $.ajax({
        url: '/empServlet',
        type: 'GET',
        data: {
            method: 'list',
            pageIndex: pageIndex,
            empName: $('#searchEmpName').val()
        },
        dataType: 'json',
        success: function (data) {
            console.log(data);
            $('#totalCount').text(data.totalCount);
            $('#employeeTableBody').empty();

            // 日期格式化函数
            function formatDate(dateString) {
                if (!dateString) return '';

                // 如果已经是yyyy-MM-dd格式，直接返回
                if (/^\d{4}-\d{2}-\d{2}$/.test(dateString)) {
                    return dateString;
                }

                // 处理带有时分秒的日期字符串
                try {
                    // 方法1：简单截取前10个字符（适用于格式为"yyyy-MM-dd HH:mm:ss"的情况）
                    if (dateString.length >= 10) {
                        return dateString.substring(0, 10);
                    }

                    // 方法2：使用Date对象处理（更通用）
                    const date = new Date(dateString);
                    if (isNaN(date.getTime())) {
                        return dateString; // 如果无法解析为日期，返回原始字符串
                    }

                    const year = date.getFullYear();
                    const month = String(date.getMonth() + 1).padStart(2, '0');
                    const day = String(date.getDate()).padStart(2, '0');

                    return `${year}-${month}-${day}`;
                } catch (e) {
                    console.error('日期格式化错误:', e);
                    return dateString; // 出错时返回原始字符串
                }
            }

            for (const employee of data.data) {
                if (employee.imgUrl == null) {
                    employee.imgUrl = 'img/default.jpg';
                }

                // 格式化日期
                const formattedDate = formatDate(employee.startDate);

                let tr = `<tr>
                    <td id="eId">` + employee.id + `</td>
                    <td><img src="` + employee.imgUrl + `" alt="员工头像" class="img-fluid"></td>
                    <td>` + employee.empName + `</td>
                    <td>` + employee.deptName + `</td>
                    <td>` + employee.position + `</td>
                    <td>` + formattedDate + `</td>  <!-- 使用格式化后的日期 -->
                    <td>` + employee.phone + `</td>
                    <td>
                        <button data-emp-id="` + employee.id + `" class="btn btn-sm btn-info mr-1" data-toggle="modal" data-target="#employeeModal">
                            <i class="fas fa-edit"></i>
                        </button>
                        <button data-emp-id="` + employee.id + `" class="btn btn-sm btn-danger">
                            <i class="fas fa-trash-alt"></i>
                        </button>
                    </td>
                </tr>`;
                $('#employeeTableBody').append(tr);
            }

            // 分页代码保持不变
            $('#pageNav').empty();
            let pageup;
            if (data.pageIndex === 1) {
                pageup = `
                <li class="page-item disabled">
                    <button class="page-link" href="#" tabindex="-1" aria-disabled="true">上一页</button>
                </li>`;
            } else {
                pageup = `
                <li class="page-item">
                    <button class="page-link" href="#" tabindex="-1" onclick="showPage(${data.pageIndex - 1})">上一页</button>
                </li>`;
            }
            $('#pageNav').append(pageup);

            let pagedown;
            if (data.pageIndex === data.pageCount) {
                pagedown = `
                <li class="page-item disabled">
                    <button class="page-link" href="#" tabindex="-1" aria-disabled="true">下一页</button>
                </li>`;
            } else {
                pagedown = `
                <li class="page-item">
                    <button class="page-link" href="#" tabindex="-1" onclick="showPage(${data.pageIndex + 1})">下一页</button>
                </li>`;
            }
            $('#pageNav').append(pagedown);
        }
    });
}

// 获取部门列表
function getDeptList() {
    $.ajax({
        url: '/deptServlet',
        type: 'GET',
        data: {
            method: 'showDept'
        },
        dataType: 'json',
        success: function (data) {
            console.log(data);
            $('#department').empty();
            $('#department').append(`<option value="">请选择部门</option>`);
            if (Array.isArray(data.data)) {
                for (const dept of data.data) {
                    let option = `<option value="` + dept.id + `" name='department'>` + dept.deptName + `</option>`;
                    $('#department').append(option);
                }
            } else {
                console.error('data.data 不是一个数组:', data.data);
            }
        },
        error: function (xhr, status, error) {
            console.error('AJAX 请求失败:', status, error);
        }
    });
}

// 提交表单
document.getElementById('employeeForm').addEventListener('submit', function (e) {
    e.preventDefault();
    const formData = new FormData();
    formData.append('method', 'edit');
    const departmentId = document.getElementById('department').value;
    formData.append('deptId', departmentId);
    formData.append('empName', document.getElementById('empName').value);
    formData.append('position', document.getElementById('position').value);
    formData.append('startDate', document.getElementById('hireDate').value);
    formData.append('phone', document.getElementById('phone').value);
    formData.append('empId', document.getElementById('empId').value);
    if (document.getElementById('photo').files[0]) {
        formData.append('imgURL', document.getElementById('photo').files[0]);
    }
    if (!formData.get('empName')) {
        alert('请输入员工姓名');
        return;
    }
    if (!departmentId) {
        alert('请选择部门');
        return;
    }
    console.log('asdfsa'+formData);
    $.ajax({
        url: '/empServlet',
        type: 'POST',
        data: formData,
        processData: false,
        contentType: false,
        dataType: 'json',
        success: function (data) {
            if (data.code === 200) {
                alert(data.message);
                $('#employeeModal').modal('hide');
                location.reload();
                showPage(1);
            } else {
                alert(data.message);
            }
        },
        error: function (xhr, status, error) {
            console.error('AJAX 请求失败:', status, error);
            alert('提交失败，请稍后重试');
        }
    });
});

// 添加编辑按钮点击事件监听器
$('#employeeTableBody').on('click', '.btn-info', function () {
    const empId = $(this).data("emp-id");
    console.log('编辑员工ID:', empId);
    $('#empId').show();
    getEmpById(empId);
});

// 通过员工Id获取员工详情的方法
function getEmpById(empId) {
    $.ajax({
        url: '/empServlet',
        type: 'GET',
        data: {
            empId,
            method: 'getEmpById'
        },
        dataType: 'json',
        success: function (data) {
            console.log(data);

            // 格式化日期，只保留年月日
            const formattedDate = formatDate(data.startDate);

            $('#empId').val(data.id);
            $('#empName').val(data.empName);
            $('#department').val(data.deptId);
            $('#position').val(data.position);
            $('#hireDate').val(formattedDate);  // 使用格式化后的日期
            $('#phone').val(data.phone);
        }
    });
}

// 日期格式化函数
function formatDate(dateString) {
    if (!dateString) return '';

    // 如果已经是yyyy-MM-dd格式，直接返回
    if (/^\d{4}-\d{2}-\d{2}$/.test(dateString)) {
        return dateString;
    }

    // 处理带有时分秒的日期字符串
    try {
        // 方法1：简单截取前10个字符（适用于格式为"yyyy-MM-dd HH:mm:ss"的情况）
        if (dateString.length >= 10) {
            return dateString.substring(0, 10);
        }

        // 方法2：使用Date对象处理（更通用）
        const date = new Date(dateString);
        if (isNaN(date.getTime())) {
            return dateString; // 如果无法解析为日期，返回原始字符串
        }

        const year = date.getFullYear();
        const month = String(date.getMonth() + 1).padStart(2, '0');
        const day = String(date.getDate()).padStart(2, '0');

        return `${year}-${month}-${day}`;
    } catch (e) {
        console.error('日期格式化错误:', e);
        return dateString; // 出错时返回原始字符串
    }
}

// 添加删除按钮事件监听器
$('#employeeTableBody').on('click', '.btn-danger', function () {
    const empId = $(this).data("emp-id");
    if (empId) {
        if (confirm('确定要删除该员工吗？')) {
            $.ajax({
                url: '/empServlet',
                type: 'GET',
                data: {
                    empId: empId,
                    method: 'delete'
                },
                dataType: 'json',
                success: function (data) {
                    alert(data.message);
                    location.reload();
                },
                error: function (xhr, status, error) {
                    console.error('AJAX 请求失败:', status, error);
                    alert('删除失败，请稍后重试');
                }
            });
        }
    } else {
        alert('无法获取员工ID');
    }
});
